DynamoDB TTL (Time to Live) কনফিগারেশন

Database Tutorials - ডাইনামোডিবি (DynamoDB)
197
197

Time to Live (TTL) একটি গুরুত্বপূর্ণ ফিচার যা DynamoDB টেবিলের আইটেমগুলি স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় পর মুছে ফেলার সুবিধা প্রদান করে। TTL কনফিগারেশন ব্যবহার করে, আপনি ডেটাবেসের মধ্যে অপ্রয়োজনীয় বা পুরানো ডেটা ম্যানুয়ালি মুছতে না গিয়েও সিস্টেমকে একটি নির্দিষ্ট সময় পর অটোমেটিক্যালি ডেটা মুছতে পরিচালনা করতে পারেন।

TTL ফিচারটি বিশেষত তখন কার্যকরী যখন:

  • অ্যাপ্লিকেশনগুলির মধ্যে অস্থায়ী ডেটা ব্যবহার করা হয় (যেমন, সেশন ডেটা, টোকেন, ক্যাশে ইত্যাদি)।
  • আপনার ডেটাবেসে পুরানো ডেটা জমে যাওয়ার সমস্যা থাকলে।
  • ব্যাকআপ বা ডেটা রিটেনশন পলিসি প্রয়োগ করা কঠিন হয়।

TTL কিভাবে কাজ করে?

DynamoDB TTL একটি নির্দিষ্ট অ্যাট্রিবিউটের (ফিল্ড) উপর নির্ভর করে কাজ করে যা সময় সীমা নির্ধারণ করে। এই অ্যাট্রিবিউটটি সময়ের স্ট্যাম্প হিসাবে কাজ করে, এবং নির্দিষ্ট সময় পর DynamoDB নিজেই সেই আইটেমটি মুছে ফেলে।

TTL কনফিগারেশন সেটআপ প্রক্রিয়া:

ধাপ ১: TTL সক্রিয় করা

  1. DynamoDB Management Console এ লগ ইন করুন।
  2. আপনার টেবিলটি সিলেক্ট করুন যেটি আপনি TTL কনফিগার করতে চান।
  3. Overview ট্যাবে যান এবং নিচে Time to Live (TTL) সেকশনে ক্লিক করুন।
  4. Enable TTL বাটনে ক্লিক করুন।

ধাপ ২: TTL অ্যাট্রিবিউট নির্বাচন

  1. TTL Attribute Name এর ক্ষেত্রে একটি অ্যাট্রিবিউট নির্বাচন করুন যা আপনি সময় নির্ধারণের জন্য ব্যবহার করতে চান। সাধারণত এটি একটি timestamp (যেমন, expirationTime, expireAt, ইত্যাদি) হবে।
  2. আপনার অ্যাট্রিবিউটে Unix টাইমস্ট্যাম্প (epoch time) ব্যবহার করুন, যা seconds since 1970-01-01 00:00:00 UTC হিসেবে গণনা হয়। DynamoDB এই টাইমস্ট্যাম্পের ভিত্তিতে আইটেম মুছে ফেলার কাজটি করবে। উদাহরণস্বরূপ:
    • expireAt ফিল্ডে 1672531199 টাইমস্ট্যাম্প থাকবে, তাহলে আইটেমটি ওই সময়ের পর মুছে যাবে।

ধাপ ৩: TTL অ্যাট্রিবিউট নিশ্চিত করা

  1. Save বাটনে ক্লিক করে আপনার TTL কনফিগারেশন সেভ করুন।
  2. এরপর, DynamoDB সেই নির্দিষ্ট অ্যাট্রিবিউট (যেমন expireAt) থেকে ডেটা এক্সপায়ার হওয়ার সময় অনুসরণ করবে এবং সেই অনুযায়ী আইটেমটি মুছে ফেলবে।

TTL এর বৈশিষ্ট্য:

  1. Automation: TTL স্বয়ংক্রিয়ভাবে আইটেমের মুছে ফেলার কাজ করে, যাতে অ্যাপ্লিকেশন লেভেলে ম্যানুয়াল মুছে ফেলার প্রক্রিয়া না করতে হয়।
  2. Cost-Efficient: পুরানো ডেটা মুছে ফেলার মাধ্যমে স্টোরেজের খরচ কমানো যায়।
  3. Real-time Expiry: যখন আইটেমের TTL মান শেষ হয়, তখন DynamoDB আইটেমটি মুছে ফেলে। তবে, ডিলিট করা আইটেমের জন্য টেবিলের ব্যাচ অপারেশন সম্পূর্ণ হতে কিছু সময় লাগতে পারে।
  4. Non-reversible: একবার TTL এর সময় শেষ হলে, আইটেমটি আর পুনরুদ্ধার করা যায় না।

TTL ব্যবহার করার কিছু উদাহরণ:

সেশন ডেটা:

যদি আপনি একটি সেশন টেবিল পরিচালনা করছেন, যেখানে ব্যবহারকারীদের সেশন আইডি এবং সেশন ডেটা সংরক্ষণ করা হয়, তাহলে TTL কনফিগার করা যেতে পারে যাতে সেশনটি নির্দিষ্ট সময় পর (যেমন, ৩০ মিনিট পর) অটোমেটিক্যালি মুছে যায়।

{
  "sessionId": "xyz123",
  "userId": "user001",
  "sessionData": "Some data...",
  "expireAt": 1672531199
}

এখানে, expireAt অ্যাট্রিবিউটটি একটি Unix টাইমস্ট্যাম্প ধারণ করে, যার মান ৩০ মিনিট পর সেট করা হবে।

টোকেন এক্সপায়রি:

অথবা, যদি আপনার অ্যাপ্লিকেশন অ্যাক্সেস টোকেন ব্যবহারের জন্য DynamoDB টেবিল ব্যবহার করে, তাহলে আপনি টোকেনের জন্য TTL সেট করতে পারেন। এক্সপায়ারি সময়ের পরে DynamoDB টোকেনটি মুছে ফেলবে।


TTL এবং অন্যান্য কনফিগারেশন:

TTL কনফিগারেশনের সঙ্গে, আপনাকে কিছু বিষয় মনে রাখতে হবে:

  • Delete Marker: আইটেমের ডিলিট করার জন্য একটি "delete marker" যোগ করা হয়, যা আইটেমটির উপস্থিতি না থাকা সত্ত্বেও কিছু সময় পর্যন্ত স্ট্রিম এবং স্ক্যান অপারেশনগুলোতে উপস্থিত থাকতে পারে।
  • Eventual Consistency: TTL অ্যাট্রিবিউট সেট করার পর, DynamoDB সময় নিতে পারে আইটেমটি ডিলিট করার জন্য। এর ফলে কিছু সময় পর্যন্ত ডেটা কনসিস্টেন্সি হারাতে পারে, তবে এটি সাধারণত খুব সামান্য সময়ের জন্য ঘটে।
  • No Charge for Expired Items: এক্সপায়ার হওয়া আইটেমগুলি কোনো স্টোরেজ চার্জ তৈরি করে না, তবে ডিলিট হওয়ার জন্য কিছু প্রক্রিয়া চলে, যার জন্য সামান্য পারফরম্যান্স ইমপ্যাক্ট হতে পারে।

TTL কার্যকারিতা টেস্ট করা:

আপনি চাইলে TTL ফিচারটি টেস্ট করতে পারেন expireAt অ্যাট্রিবিউট দিয়ে কয়েকটি আইটেম যোগ করে এবং পরীক্ষা করতে পারেন যে আইটেমগুলি সঠিক সময়ে ডিলিট হচ্ছে কিনা। DynamoDB এ ব্যাকগ্রাউন্ডে এগুলি স্বয়ংক্রিয়ভাবে হবে।


TTL কনফিগারেশন পর্যালোচনা:

TTL একটি শক্তিশালী এবং কার্যকরী টুল যা DynamoDB ডেটাবেসে ডেটা রিটেনশন পলিসি নির্ধারণ করতে সাহায্য করে। এটি স্বয়ংক্রিয়ভাবে পুরানো ডেটা মুছে ফেলতে এবং স্টোরেজ খরচ কমাতে সক্ষম, যার ফলে আপনার অ্যাপ্লিকেশন আরও দক্ষ এবং সাশ্রয়ী হয়ে ওঠে।

common.content_added_by

TTL কী এবং কিভাবে কাজ করে?

265
265

TTL (Time to Live) হলো একটি বিশেষ ফিচার যা DynamoDB তে ডেটার আয়ু (lifetime) নির্ধারণ করতে ব্যবহৃত হয়। এটি একটি ডেটা অপারেশন বা রেকর্ডের মধ্যে সময়সীমা নির্ধারণ করে, যার পরে সেটি স্বয়ংক্রিয়ভাবে মুছে যায়। এই ফিচারটি বিশেষভাবে কার্যকর যখন আপনি একটি নির্দিষ্ট সময়ের পর অপ্রয়োজনীয় বা পুরোনো ডেটা মুছে ফেলতে চান, যেমন লোগ ফাইল, সেশন ডেটা বা ক্যাশে তথ্য।

TTL সহ, আপনি ডেটার expire time (অথবা "expiry timestamp") নির্ধারণ করতে পারেন, যা নির্দেশ করে কোন সময়ে ডেটাটি স্বয়ংক্রিয়ভাবে ডিলিট হবে।


TTL কীভাবে কাজ করে:

  1. Expire Timestamp: TTL ফিচারটি ব্যবহারের জন্য, ডেটার একটি নির্দিষ্ট expire timestamp ফিল্ড থাকতে হবে, যা ইউনিকোড টাইমস্ট্যাম্প (যেমন, Unix epoch টাইম বা মাইক্রোসেকেন্ড ভিত্তিক) আকারে সংরক্ষিত হয়। এই timestamp ডেটার লাইফটাইম নির্ধারণ করে, এবং ডেটাটি সেই সময়ে পৌঁছানোর পর ডিলিট হয়ে যাবে
  2. TTL সক্রিয় করা: DynamoDB তে TTL সক্রিয় করতে, আপনাকে AWS Management Console, AWS CLI, বা AWS SDK এর মাধ্যমে টেবিলের জন্য TTL ফিচারটি চালু করতে হবে। যখন আপনি TTL সক্রিয় করেন, তখন একটি নির্দিষ্ট Attribute এর মাধ্যমে expire timestamp নির্ধারণ করতে হবে।
  3. TTL Process:
    • ডেটা যেহেতু TTL ফিচার দিয়ে নির্ধারিত সময়ের পর মুছে যাবে, DynamoDB এর ব্যাকগ্রাউন্ড প্রসেস প্রতিদিন বা নির্দিষ্ট সময় অন্তর ডেটা স্ক্যান করে যে আইটেমগুলি expire হয়েছে সেগুলি ডিলিট করে।
    • এটি একটি অটোমেটিক প্রসেস এবং ডেটার মুছে ফেলার জন্য কোনো অতিরিক্ত হস্তক্ষেপের প্রয়োজন হয় না।
  4. Data Deletion:
    • যখন ডেটার TTL পেরিয়ে যায়, DynamoDB স্বয়ংক্রিয়ভাবে সেই ডেটা মুছে ফেলবে। এটি অথেনটিকেশন ডেটা, সেশন ইনফরমেশন, ক্যাশ ডেটা, অথবা এমন ডেটা যেগুলি কেবল একটি নির্দিষ্ট সময়কালীন প্রযোজ্য, সেগুলির জন্য উপযুক্ত।

TTL সক্রিয় করা (AWS Management Console)

  1. AWS Management Console এ লগ ইন করুন।
  2. DynamoDB টেবিলটি নির্বাচন করুন।
  3. Overview পেইজে গিয়ে Time to Live অপশনটি নির্বাচন করুন।
  4. Enable TTL ক্লিক করুন এবং Attribute name সেট করুন (যেমন: expireAt বা আপনার নির্দিষ্ট নাম দিয়ে একটি ফিল্ড তৈরি করুন)।
  5. Save ক্লিক করুন।

এখন আপনি টেবিলের আইটেমে সেই ফিল্ড (expire timestamp) দিয়ে ডেটা ইনসার্ট করলে, সেটি স্বয়ংক্রিয়ভাবে TTL এর মাধ্যমে নির্দিষ্ট সময় পর মুছে যাবে।


TTL এর ব্যবহার:

  1. Session Management: আপনি ব্যবহারকারীর সেশন ডেটা রাখার জন্য TTL ব্যবহার করতে পারেন, যাতে সেশন শেষ হওয়ার পর ডেটা স্বয়ংক্রিয়ভাবে মুছে যায়। উদাহরণস্বরূপ, sessionExpiry টাইমস্ট্যাম্প ফিল্ড ব্যবহার করা হতে পারে।
  2. Log Data: লগ ডেটা বা অন্যান্য অস্থায়ী ডেটা যেমন ক্যাশ বা টেম্পোরারি ফাইলের জন্য TTL ব্যবহার করা যায়, যাতে পুরোনো তথ্য স্বয়ংক্রিয়ভাবে মুছে যায় এবং স্টোরেজ অপ্টিমাইজড থাকে।
  3. Product Catalogs (For Flash Sales): TTL ব্যবহার করে আপনি সীমিত সময়ের জন্য একটি প্রোডাক্ট ক্যাটালগ তৈরি করতে পারেন এবং সেই ক্যাটালগের ডেটা একটি নির্দিষ্ট সময় পর মুছে যাবে।

TTL এর সুবিধা:

  • স্টোরেজ অপ্টিমাইজেশন: অপ্রয়োজনীয় বা পুরোনো ডেটা অটোমেটিক্যালি মুছে যাওয়ায় আপনার ডেটাবেসে স্টোরেজের অপচয় কমে।
  • সহজ ম্যানেজমেন্ট: ডেটার ম্যানুয়ালি ডিলিট করার প্রয়োজন নেই, তাই পরিচালনা সহজ হয়।
  • কস্ট সাশ্রয়ী: পুরোনো ডেটা মুছে যাওয়ায় স্টোরেজ খরচ কমে এবং আপনার ডেটাবেস অপটিমাইজড থাকে।

TTL এর সীমাবদ্ধতা:

  • ডেটা বিলম্বে ডিলিট হয়: TTL এর মাধ্যমে ডেটা মুছে ফেলা কিছু সময়ের মধ্যে হতে পারে, যা ফোরকাস্টেড টাইমের ঠিক পরপর নাও হতে পারে।
  • পূর্ববর্তী ডেটা ব্যবহারযোগ্য নয়: একবার ডেটা TTL দিয়ে মুছে গেলে তা পুনরুদ্ধার করা সম্ভব নয়, তাই নিশ্চিত হতে হবে যে আপনার অ্যাপ্লিকেশন ঠিকভাবে ডেটা মুছে যাওয়ার পূর্বে প্রয়োজনে ডেটা গ্রহণ করছে।

TTL এর উদাহরণ:

ধরা যাক, আপনি একটি টেবিল UserSessions তৈরি করেছেন, যেখানে ব্যবহারকারীর লগইন সময়ের সাথে একটি expireAt ফিল্ড রয়েছে যা ব্যবহারকারীর সেশন শেষে ডেটা মুছে দেয়। এই ফিল্ডে আপনি সেশনের শেষ সময়ের টাইমস্ট্যাম্প সংরক্ষণ করতে পারেন। টেবিলের TTL সক্রিয় হলে, এই সেশন শেষে সেই ডেটা স্বয়ংক্রিয়ভাবে মুছে যাবে।

Python (Boto3) দিয়ে ডেটা ইনসার্টের উদাহরণ:

import boto3
import time

# DynamoDB client তৈরি
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('UserSessions')

# সেশন শেষ হওয়ার সময়ের জন্য টাইমস্ট্যাম্প (এখানে 1 ঘণ্টা পরে)
expiry_time = int(time.time()) + 3600  # 1 ঘণ্টা পর

# ডেটা ইনসার্ট করা
table.put_item(
    Item={
        'userId': 'user123',
        'sessionData': 'Some data',
        'expireAt': expiry_time  # TTL ফিল্ড
    }
)

এখন, যখন expireAt এর সময় চলে আসবে, DynamoDB এই আইটেমটিকে স্বয়ংক্রিয়ভাবে মুছে ফেলবে।


TTL একটি শক্তিশালী ফিচার যা ডেটার অযাচিত জমা কমাতে এবং ডেটাবেসকে কার্যকরী ও অপটিমাইজড রাখতে সাহায্য করে।

common.content_added_by

Data Expiration এবং Management

240
240

DynamoDB তে Data Expiration এবং Management অত্যন্ত গুরুত্বপূর্ণ বিষয়, বিশেষ করে যখন আপনার অ্যাপ্লিকেশনে বড় ধরনের ডেটা স্টোরেজ বা বড় পরিসরে ডেটা প্রবাহ রয়েছে। DynamoDB ডেটাবেসে সঠিকভাবে ডেটা ম্যানেজমেন্ট এবং এক্সপিরেশন নিশ্চিত করতে হলে আপনাকে কিছু কার্যকরী কৌশল এবং বৈশিষ্ট্য ব্যবহার করতে হবে, যেমন Time to Live (TTL) এবং auto-scaling

এখানে আমরা DynamoDB তে Data Expiration এবং Management সম্পর্কে বিস্তারিত আলোচনা করব।


1. Time to Live (TTL)

Time to Live (TTL) হল একটি গুরুত্বপূর্ণ ফিচার যা আপনাকে DynamoDB টেবিলের ডেটার জন্য একটি নির্দিষ্ট সময়সীমা নির্ধারণ করতে সাহায্য করে। এই সময়সীমার পর ডেটাটি অটোমেটিকভাবে মুছে যাবে। এটি বিশেষভাবে উপকারী যখন আপনি শুধুমাত্র নির্দিষ্ট সময় পর্যন্ত কার্যকরী ডেটা রাখতে চান, যেমন সেশন ডেটা, অস্থায়ী ক্যাশ, বা অর্পিত ট্রানজেকশন।

TTL এর ব্যবহার:

TTL সক্রিয় করলে, নির্দিষ্ট সময়ে ডেটা মুছে ফেলা হয়, এবং এটি পরিচালনা করা সহজ হয়।

  • How TTL Works:
    • আপনি যে অ্যাট্রিবিউটটি TTL হিসেবে নির্বাচন করবেন, তার ভ্যালু একটি টাইমস্ট্যাম্প হতে হবে (Unix timestamp in seconds) যা ডেটার মুছে ফেলার সময় নির্ধারণ করবে।
    • DynamoDB এই টাইমস্ট্যাম্পের ভিত্তিতে সেগুলিকে অটোমেটিকভাবে মুছে ফেলে।

TTL সক্রিয় করা:

  1. TTL Enable: আপনি DynamoDB টেবিলের জন্য TTL সক্রিয় করতে পারেন, যা একটি নির্দিষ্ট অ্যাট্রিবিউটের ভিত্তিতে ডেটা মুছে ফেলে। উদাহরণস্বরূপ, আপনি expirationTime নামক একটি অ্যাট্রিবিউট ব্যবহার করে নির্দিষ্ট সময় পর ডেটা মুছে ফেলার জন্য সেট করতে পারেন।
  2. CLI Example:

    aws dynamodb update-table \
      --table-name YourTableName \
      --time-to-live-specification "Enabled=true,AttributeName=expirationTime"
    
  3. Data Insertion with TTL Attribute: যখন আপনি নতুন ডেটা ইনসার্ট করবেন, তখন আপনাকে একটি expirationTime অ্যাট্রিবিউট যোগ করতে হবে যা Unix টাইমস্ট্যাম্প হিসেবে নির্দিষ্ট করবে কখন ডেটাটি মুছে যাবে।

    {
        "UserID": {"S": "user123"},
        "Name": {"S": "John Doe"},
        "expirationTime": {"N": "1657160123"}  // Unix timestamp for expiration
    }
    

TTL সুবিধা:

  • Automated Cleanup: TTL ফিচারটি ডেটার অটোমেটিক মুছে ফেলার কাজটি সম্পাদন করে, যার ফলে ম্যানুয়ালি ডেটা মুছতে হয় না।
  • Cost Efficiency: পুরনো, অব্যবহৃত ডেটা মুছে ফেলা হলে আপনার ডেটাবেসের সাইজ ছোট হয়ে যাবে, এবং তাই আপনি কম খরচে স্টোরেজ ব্যবহার করতে পারবেন।

2. Auto-Scaling

Auto-scaling DynamoDB এ একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে টেবিলের রিড এবং রাইট ক্যাপাসিটি স্বয়ংক্রিয়ভাবে বাড়ানোর এবং কমানোর অনুমতি দেয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনার অ্যাপ্লিকেশন একসাথে অনেক রিকোয়েস্ট প্রক্রিয়া করে, এবং আপনাকে অটোমেটিক স্কেলিং সেট আপ করতে হয় যাতে নির্দিষ্ট সীমার মধ্যে থাকতে পারে।

Auto-scaling এর মাধ্যমে DynamoDB টেবিল ম্যানেজমেন্ট:

  • Provisioned Capacity Mode: যখন আপনি provisioned capacity mode ব্যবহার করেন, তখন আপনি রিড এবং রাইট ক্যাপাসিটি ইউনিট কনফিগার করতে পারেন এবং Auto-scaling আপনাকে ঐ ক্যাপাসিটিগুলি স্বয়ংক্রিয়ভাবে সামঞ্জস্য করতে সাহায্য করবে।
  • On-Demand Capacity Mode: যখন আপনি on-demand capacity mode ব্যবহার করেন, DynamoDB স্বয়ংক্রিয়ভাবে আপনার প্রয়োজন অনুসারে রিড এবং রাইট ক্যাপাসিটি বাড়িয়ে নেবে।

Auto-scaling কনফিগারেশন:

Auto-scaling কনফিগার করতে, আপনি নিম্নলিখিত ধাপগুলো অনুসরণ করতে পারেন:

  1. CLI Example for Auto-scaling Configuration:

    aws dynamodb update-table \
      --table-name YourTableName \
      --provisioned-throughput "ReadCapacityUnits=5,WriteCapacityUnits=5" \
      --auto-scaling-target-scaling-policy "TargetTrackingScalingPolicy"
    
  2. Auto-scaling Parameters:
    • Target Utilization: আপনি যে রিড এবং রাইট ক্যাপাসিটি ব্যবহার করতে চান তা সঠিকভাবে সামঞ্জস্য করতে Target Utilization সেট করতে পারেন।
    • Minimum and Maximum Capacity: আপনি আপনার টেবিলের জন্য সর্বনিম্ন এবং সর্বোচ্চ ক্যাপাসিটি ইউনিট সেট করতে পারেন যাতে লোডের পরিবর্তন অনুসারে এটি সঠিকভাবে স্কেল হয়।

3. Expiration এবং Archive Strategy

আপনি যদি পুরনো ডেটা আর্কাইভ করতে চান, তাহলে আপনি DynamoDB Streams ব্যবহার করে ডেটা পরিবর্তন ট্র্যাক করতে পারেন এবং সেই ডেটাগুলিকে আরেকটি সস্তা স্টোরেজে (যেমন S3) স্থানান্তর করতে পারেন। পরে, আপনি এই আর্কাইভ ডেটা থেকে মুছে ফেলতে পারবেন DynamoDB এর টেবিল থেকে, যখন এগুলি আর প্রয়োজনীয় না থাকে।

Archiving with DynamoDB Streams:

  1. Streams Enable: আপনার DynamoDB টেবিলের জন্য Streams সক্রিয় করুন।
  2. Lambda for Archiving: DynamoDB Streams এর মাধ্যমে Lambda ফাংশন ব্যবহার করে ডেটা S3 এ আর্কাইভ করুন।

সারাংশ

Data Expiration এবং Management DynamoDB তে অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন আপনার টেবিলে সময়ভিত্তিক ডেটা পরিচালনা করতে হয়। TTL ফিচারটি আপনাকে নির্দিষ্ট সময় পর ডেটা অটোমেটিকভাবে মুছে ফেলতে সাহায্য করে, আর auto-scaling টেবিলের ক্যাপাসিটি অনুযায়ী স্বয়ংক্রিয়ভাবে রিড এবং রাইট পারফরম্যান্স সমন্বয় করতে সাহায্য করে।

এই ফিচারগুলি ব্যবহার করে আপনি আপনার ডেটাবেসের পারফরম্যান্স এবং কস্ট-এফিশিয়েন্সি নিশ্চিত করতে পারবেন।

common.content_added_by

TTL কনফিগারেশন এবং Monitoring

185
185

TTL (Time to Live) হল একটি গুরুত্বপূর্ণ ফিচার যা DynamoDB টেবিলের ডেটা স্বয়ংক্রিয়ভাবে এক নির্দিষ্ট সময় পর মুছে ফেলার সুযোগ প্রদান করে। TTL কনফিগারেশন করার মাধ্যমে আপনি এমন ডেটা রাখতে পারেন যা নির্দিষ্ট সময়ের পরে আর প্রয়োজন হয় না, যেমন সেশন ডেটা, টেম্পোরারি ফাইল, ইত্যাদি। এর মাধ্যমে আপনার টেবিলের আকার কমানো যায় এবং খরচও নিয়ন্ত্রণ করা সম্ভব হয়।

TTL কনফিগারেশন এবং Monitoring হল DynamoDB টেবিলের পারফরম্যান্স এবং ডেটার জীবিতকাল পর্যবেক্ষণ এবং পরিচালনা করার প্রক্রিয়া।


TTL কনফিগারেশন:

  1. TTL ফিচার চালু করা: DynamoDB টেবিলে TTL চালু করতে, আপনাকে একটি নির্দিষ্ট attribute নির্ধারণ করতে হবে যা TTL এর মেয়াদ প্রদর্শন করবে (একটি timestamp যা বলে দিবে কখন ডেটাটি মুছে যাবে)।
  2. TTL কনফিগার করার প্রক্রিয়া:
    • Step 1: AWS Management Console এ লগইন করুন এবং DynamoDB সেকশনে যান।
    • Step 2: টেবিল নির্বাচন করুন যেখানে TTL কনফিগার করতে চান।
    • Step 3: Time to Live সেকশনটি খুঁজে পেতে টেবিলের "Manage Time to Live" অপশনে ক্লিক করুন।
    • Step 4: একটি নতুন TTL attribute তৈরি করুন (যেমন expirationTime), যা ইন্সার্ট বা আপডেটের সময় টাইমস্ট্যাম্প হিসেবে সেট হবে এবং ডেটা কখন মুছে যাবে তা নির্ধারণ করবে।
    • Step 5: TTL চালু করুন এবং সেটিংস সংরক্ষণ করুন।
  3. TTL Attribute Example: উদাহরণস্বরূপ, আপনি যদি expirationTime নামে একটি ফিল্ড ব্যবহার করেন, তবে এর মান হিসেবে ইউনিক্স টাইমস্ট্যাম্প নির্ধারণ করবেন, যা ডেটার মুছে যাওয়ার সময় উল্লেখ করবে।

    কোড উদাহরণ (Python - Boto3):

    import boto3
    from datetime import datetime, timedelta
    
    # DynamoDB client তৈরি
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table('YourTableName')
    
    # TTL ফিল্ড তৈরি করা (যেমন, 24 ঘণ্টার পর ডেটা মুছে যাবে)
    expiration_time = int((datetime.utcnow() + timedelta(days=1)).timestamp())
    
    # ডেটা ইনসার্ট করা TTL সহ
    table.put_item(
        Item={
            'PartitionKey': 'value1',
            'SortKey': 'value2',
            'data': 'some_data',
            'expirationTime': expiration_time  # TTL টাইমস্ট্যাম্প
        }
    )
    
  4. TTL কার্যকর হওয়া:
    • যখন TTL কনফিগার করা হয়, DynamoDB স্বয়ংক্রিয়ভাবে ডেটার মেয়াদ শেষ হওয়ার পর সেটি মুছে ফেলে।
    • এটি সাধারণত কিছু মিনিট সময় নেয়, তবে ডেটা 48 ঘণ্টার মধ্যে ডিলিট হতে পারে।

TTL Monitoring:

TTL কনফিগারেশন করার পর, DynamoDB আপনাকে TTL ডেটা মুছে ফেলার কার্যকলাপ পর্যবেক্ষণ করতে সাহায্য করে। আপনাকে বিভিন্ন AWS টুল ব্যবহার করতে হবে যাতে এই মুছে ফেলা ডেটার ট্র্যাক রাখতে পারেন এবং পারফরম্যান্স পর্যবেক্ষণ করতে পারেন।

  1. CloudWatch Metrics:
    • DynamoDB TTL মেট্রিক্স আপনাকে ডেটা কত দ্রুত মুছে যাচ্ছে এবং কেমন পারফরম্যান্স হচ্ছে তা মনিটর করতে সাহায্য করবে।
    • ConsumedWriteCapacityUnits এবং ThrottledRequests মেট্রিক্স ব্যবহার করতে পারেন, যা দেখাবে কত রিসোর্স ডিমান্ড হচ্ছে ডেটা মুছে ফেলার জন্য।
  2. CloudWatch Logs:
    • আপনি CloudWatch Logs ব্যবহার করে TTL ডেটার মুছে ফেলার কার্যক্রম লোগ করতে পারেন। DynamoDB থেকে মুছে ফেলা ডেটার জন্য আলাদা লোগ গ্রুপ তৈরি করা যেতে পারে।
  3. DynamoDB Table Metrics:
    • DynamoDB টেবিলের TTL সম্পর্কিত মেট্রিক্স দেখতে পারেন যাতে আপনি জানতে পারেন কতটি আইটেম TTL-এর মাধ্যমে মুছে গেছে। আপনি DynamoDB Streams ব্যবহার করে মুছে ফেলা ডেটা ট্র্যাক করতে পারেন।
  4. Monitoring via CloudWatch:
    • আপনি CloudWatch Dashboards তৈরি করে মুছে ফেলা ডেটার পরিমাণ, পারফরম্যান্স ইত্যাদি মনিটর করতে পারবেন।

TTL Monitoring Example:

import boto3

# CloudWatch client তৈরি
cloudwatch = boto3.client('cloudwatch')

# CloudWatch মেট্রিক্স পর্যবেক্ষণ করা
response = cloudwatch.get_metric_data(
    MetricDataQueries=[
        {
            'Id': 'ttl_metric',
            'MetricStat': {
                'Metric': {
                    'Namespace': 'AWS/DynamoDB',
                    'MetricName': 'TimeToLiveDeletedItemCount',
                    'Dimensions': [
                        {
                            'Name': 'TableName',
                            'Value': 'YourTableName'
                        },
                    ]
                },
                'Period': 60,
                'Stat': 'Sum',
            },
            'ReturnData': True,
        },
    ],
    StartTime='2024-11-01T00:00:00Z',
    EndTime='2024-11-26T23:59:59Z'
)

print(response)

এই কোডটি CloudWatch থেকে TimeToLiveDeletedItemCount মেট্রিক্স বের করবে, যা আপনাকে কত আইটেম TTL এর মাধ্যমে মুছে গেছে তা জানাবে।


TTL এর সুবিধা এবং সীমাবদ্ধতা:

সুবিধা:

  1. স্টোরেজ ব্যবস্থাপনা: পুরনো বা অপ্রয়োজনীয় ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার মাধ্যমে স্টোরেজ স্পেস অপটিমাইজ করা যায়।
  2. ক্লাউড রিসোর্স অপটিমাইজেশন: ডেটা না থাকার কারণে ক্লাউড রিসোর্সের অপচয় কমে যায়।
  3. সুবিধাজনক অ্যাপ্লিকেশন: সময়সীমা পূর্ণ হলে ডেটা স্বয়ংক্রিয়ভাবে মুছে যাওয়া সহজ এবং কার্যকরী হয়।

সীমাবদ্ধতা:

  1. TTL বাস্তবায়ন সময়: TTL এর প্রভাব সরাসরি ডেটার রেকর্ডে নয়, বরং ডেটার মুছে ফেলার জন্য ডেটাবেস ইঞ্জিন কিছু সময় নেয়, যা কিছুক্ষণ বিলম্বিত হতে পারে।
  2. ডেটা মুছে যাওয়ার আগে অ্যাক্সেস: TTL মুছে যাওয়ার পরে সেই ডেটায় অ্যাক্সেস পাওয়া যাবে না, ফলে প্রয়োজনে ডেটা ফেরত পেতে ব্যবস্থা রাখতে হবে।

TTL কনফিগারেশন এবং Monitoring ব্যবহারের মাধ্যমে DynamoDB এর খরচ নিয়ন্ত্রণ, পারফরম্যান্স অপটিমাইজেশন এবং স্টোরেজ ব্যবস্থাপনা আরও সহজ হয়।

common.content_added_by

TTL এর মাধ্যমে Storage Optimization

193
193

DynamoDB TTL (Time-to-Live) একটি কার্যকরী ফিচার যা আপনাকে ডেটার সঞ্চয়স্থানের (storage) ব্যবহার অপটিমাইজ করতে সহায়তা করে। TTL এর মাধ্যমে আপনি নির্দিষ্ট সময় পর পুরনো বা অপ্রয়োজনীয় ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার নিয়ম সেট করতে পারেন। এর ফলে, টেবিলের সঞ্চয়স্থান কার্যকরভাবে ব্যবহৃত হয় এবং আপনার ডেটাবেসের খরচ কমিয়ে আনা যায়।

TTL কী?

TTL (Time-to-Live) হল একটি সময়সীমা যা নির্দিষ্ট করে দেয় যে কোনো আইটেম কতদিন ধরে DynamoDB টেবিলের মধ্যে থাকবে। একবার TTL শেষ হয়ে গেলে, ডেটাটি DynamoDB দ্বারা স্বয়ংক্রিয়ভাবে মুছে ফেলা হয়। এটি একটি "expiry time" হিসেবে কাজ করে, যা নির্ধারিত সময় পর ডেটা মুছে দেয়।

TTL সাধারণত কার্যকরী হয় এমন ডেটার জন্য যেমন:

  • Session Data (যেমন: লগইন সেশন)
  • Temporary Data (যেমন: ক্যাশড ডেটা)
  • Expired Content (যেমন: ডিলিস্টেড প্রোডাক্ট বা ইভেন্ট)

TTL এর সুবিধা:

  1. Storage Optimization: TTL এর মাধ্যমে আপনি পুরনো বা অপ্রয়োজনীয় ডেটা নিজে ম্যানুয়ালি মুছে না ফেলে স্বয়ংক্রিয়ভাবে মুছে ফেলা নিশ্চিত করতে পারেন। এতে করে আপনার টেবিলের সঞ্চয়স্থান খালি থাকে এবং অপটিমাইজড থাকে।
  2. Cost Savings: টেবিলের মধ্যে অপ্রয়োজনীয় ডেটা থাকার কারণে ডেটাবেস খরচ বৃদ্ধি পেতে পারে। TTL ব্যবহার করলে পুরনো ডেটা মুছে গেলে আপনি খরচ সাশ্রয় করতে পারেন।
  3. Performance Improvement: পুরনো ডেটা মুছে ফেলার ফলে আপনার কুয়েরি এবং ডেটাবেস অপারেশনগুলি দ্রুত হতে পারে, কারণ টেবিলের আকার কমে যায়।
  4. Automation: TTL হল একটি সম্পূর্ণভাবে স্বয়ংক্রিয় প্রক্রিয়া, যার জন্য আপনাকে ডেটা ম্যানুয়ালি মুছে ফেলতে হয় না। এটি সময় এবং শ্রম বাঁচায়।

TTL কিভাবে কাজ করে?

  1. TTL Attribute: প্রথমে আপনি DynamoDB টেবিলের জন্য একটি TTL অ্যাট্রিবিউট নির্বাচন করবেন। সাধারণত এটি একটি timestamp হিসেবে থাকে (যেমন expirationTime অ্যাট্রিবিউট)। এই অ্যাট্রিবিউটটি সঠিকভাবে সেট করার মাধ্যমে আপনি ডেটার "expiry time" নির্ধারণ করতে পারবেন।
  2. Setting TTL: আপনি যখন একটি নতুন আইটেম ইনসার্ট করেন বা এক্সিস্টিং আইটেম আপডেট করেন, তখন একটি TTL ভ্যালু প্রদান করবেন যা ডেটার মেয়াদ শেষ হওয়ার সময়টিকে নির্দেশ করবে। সাধারণত, TTL ভ্যালু একটি Unix timestamp হিসেবে হয় (যেমন ২০২৫ সালের জানুয়ারি ১ তারিখের জন্য timestamp: 1735670400 )।
  3. Automatic Deletion: যখন ডেটার TTL এর সময়সীমা শেষ হয়, DynamoDB স্বয়ংক্রিয়ভাবে সেই ডেটা মুছে ফেলে। এটি সম্পূর্ণরূপে ক্লাউড-ভিত্তিক এবং পরিচালিত, তাই আপনাকে ম্যানুয়ালি ডেটা মুছতে হবে না।

TTL কনফিগারেশন ও ব্যবহারের উদাহরণ:

১. TTL সক্রিয় করা:

  1. DynamoDB Console এ যান।
  2. আপনার টেবিল নির্বাচন করুন।
  3. Overview ট্যাবের নিচে Time to Live (TTL) অপশন খুঁজুন।
  4. Enable TTL বাটনে ক্লিক করুন।
  5. TTL attribute name দিন (যেমন: expirationTime), এবং সেভ করুন।

২. Data Insert করা TTL সহ:

DynamoDB এ আইটেম ইনসার্ট করার সময় TTL অ্যাট্রিবিউট যোগ করা হয়। উদাহরণস্বরূপ, যদি আপনি 1 দিনের মধ্যে একটি ডেটা মুছে ফেলতে চান, তাহলে:

{
   "UserID": "user123",
   "SessionID": "abcxyz",
   "expirationTime": 1672531199  // Unix timestamp for expiration (24 hours from now)
}

৩. Data Update করা TTL সহ:

একইভাবে, যদি আপনাকে কোনও ডেটা আপডেট করতে হয় এবং নতুন TTL অ্যাট্রিবিউট সেট করতে হয়, আপনি এইভাবে করতে পারেন:

aws dynamodb update-item \
    --table-name Sessions \
    --key '{"UserID": {"S": "user123"}}' \
    --update-expression "SET expirationTime = :exp" \
    --expression-attribute-values '{":exp": {"N": "1672531199"}}'

TTL ব্যবহারের সতর্কতা:

  1. Consistency: TTL হল একটি ব্যাচ প্রসেস, যার ফলে কখনও কখনও এটি ডেটা মুছে ফেলার জন্য কিছু সময় নিতে পারে। এটি পুরোপুরি "real-time" নয়।
  2. Delete Delay: ডেটা TTL এর সময়সীমা অতিক্রম করার পর কিছু বিলম্ব হতে পারে যাতে ডেটা মুছে ফেলা হয়। কিন্তু এই বিলম্বটি সাধারণত কয়েক মিনিটের মধ্যে ঘটে।
  3. Logging: TTL এর কারণে মুছে যাওয়া ডেটা জন্য কোনো লোগিং নেই, তাই যদি আপনি মুছে যাওয়া ডেটা রেকর্ড করতে চান, তাহলে আলাদাভাবে লগিং ব্যবস্থার প্রয়োজন হতে পারে।

TTL এর মাধ্যমে Storage Optimization এর উপকারিতা:

  • Automated Cleanup: পুরনো এবং অপ্রয়োজনীয় ডেটা ম্যানুয়ালি মুছে ফেলা থেকে মুক্তি পেয়ে, ডেটাবেস সঞ্চয়স্থান অপটিমাইজ করা সম্ভব।
  • Cost Management: DynamoDB তে খরচ ডেটার আকার এবং প্রক্রিয়াকৃত আইটেমের উপর নির্ভরশীল। TTL ডেটার আকার কমিয়ে খরচ সাশ্রয় করতে সাহায্য করে।
  • Improved Performance: পুরনো বা অপ্রয়োজনীয় ডেটা মুছে ফেলার ফলে কুয়েরি পারফরম্যান্সে উন্নতি হয় এবং দ্রুত ফলাফল পাওয়া যায়।

TTL হল DynamoDB টেবিলের মধ্যে অপ্রয়োজনীয় ডেটা স্বয়ংক্রিয়ভাবে মুছে ফেলার একটি কার্যকরী উপায়, যা আপনার ডেটাবেসের সঞ্চয়স্থান, পারফরম্যান্স, এবং খরচ অপটিমাইজ করতে সাহায্য করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion